home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 11
/
Cream of the Crop 11-1.iso
/
games
/
rops1642.zip
/
ROPSBOOT._PS
< prev
next >
Wrap
Text File
|
1995-10-16
|
22KB
|
564 lines
%!
% RoPS Interpreter - ropsboot._ps
% Copyright Roger Willcocks, 1993-1995
% All Rights Reserved
%
% The RoPS interpreter is an implementation of the level 1 PostScript
% programming language interpreter described in Adobe Systems' book,
% the 'PostScript language reference manual'. RoPS is not an Adobe
% approved product. The name 'PostScript' is a registered trademark of
% Adobe Systems Incorporated.
%
% This file, which must be called 'ropsboot._ps', is read automatically
% as RoPS starts up. After the entire file has been consumed the 'start'
% procedure (which is defined towards the end of this file) is executed.
% Everything that's not an operator is described in this file and can be
% customized.
%
% Version 4.02
/true where { pop (ropsboot is already loaded) print flush
currentfile closefile } if
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% At this point there's a prototype 'systemdict' on the dictionary %
% stack which contains an entry for each operator, and that's all. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%Page: 1 1
/systemdict currentdict def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% put some dictionaries in systemdict %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/$error 20 dict def
/errordict 100 dict def
/userdict 500 dict def
/FontDirectory 500 dict readonly def
/serverdict 20 dict def
/statusdict 80 dict def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 'end' requires that there are at least three dictionaries %
% on the dictionary stack; juggle things so we can safely 'end' %
% the dictionaries we are about to put in to systemdict. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
userdict begin
systemdict begin
/true 1 1 eq def
/false true not def
/build$error {
$error begin
/newerror false def
/errorname null def
/command null def
% these will be sub-arrays of the space reserved below
/ostack [] def
/estack [] def
/dstack [] def
$error /oreserve 500 array put
$error /ereserve 260 array put
$error /dreserve 25 array put
end % $error dictionary
} def
/.error { % in systemdict
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% following two lines report error as it occurs; not standard behaviour %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% (error: ) print dup print (; ) print
%% (command: ) print exch dup =print exch (\n) print flush
$error /newerror true put
$error exch /errorname exch put
$error exch /command exch put
count
$error /oreserve get exch
0 exch getinterval
astore
$error exch /ostack exch put
$error /dstack
$error /dreserve get dictstack
put
$error /estack
$error /ereserve get execstack
dup length 2 sub 0 exch getinterval
put
$error /ostack get
aload pop
stop
} def
errordict begin
/handleerror {
$error /newerror get % remember, dictionary stack may be full
{
$error /newerror false put
%%%%% (%%[ Error: ) print
%%%%% $error /errorname get =print
%%%%% (; OffendingCommand: ) print
%%%%% $error /command get =print
%%%%% ( ]%%\n) print % flush
$error /errorname get /interrupt ne {
$error /command get =print (: ) print
$error /errorname get =print
(\n\nA fault has been detected in this\n) print
(document and it has been closed) print
} if
} if
} def
/dictfull { (dictfull) .error } def
/dictstackoverflow { (dictstackoverflow) .error } def
/dictstackunderflow { (dictstackunderflow) .error } def
/execstackoverflow { (execstackoverflow) .error } def
/invalidaccess { (invalidaccess) .error } def
/invalidexit { (invalidexit) .error } def
/invalidfileaccess { (invalidfileaccess) .error } def
/invalidfont { (invalidfont) .error } def
/invalidrestore { (invalidrestore) .error } def
/ioerror { (ioerror) .error } def
/limitcheck { (limitcheck) .error } def
/nocurrentpoint { (nocurrentpoint) .error } def
/rangecheck { (rangecheck) .error } def
/stackoverflow { (stackoverflow) .error } def
/stackunderflow { (stackunderflow) .error } def
/syntaxerror { (syntaxerror) .error } def
/timeout { (timeout) .error } def
/typecheck { (typecheck) .error } def
/undefined { (undefined) .error } def
/undefinedfilename { (undefinedfilename) .error } def
/undefinedresult { (undefinedresult) .error } def
/unmatchedmark { (unmatchedmark) .error } def
/unregistered { (unregistered) .error } def
/VMerror {
$error /newerror true put
$error /errorname (VMerror) put
$error exch /command exch put
stop
} def
/interrupt { (interrupt) .error } def % ctrl-C
end % errordict
serverdict begin
/exitservercalled false def
/statusmsg { (%%[ ) print print ( ]%%\n) print flush } def
/exitserver
{
pop
$error /newerror false put
serverdict /exitservercalled true put
stop
} def
/execjob
{
{ (%stdin) (r) file cvx exec } stopped
{
$error /newerror get {
{ handleerror } stopped pop % catch errors in handler
%% (Flushing: rest of job (to end-of-file) will be ignored)
%% serverdict /statusmsg get exec
(%stdin) (r) file flushfile
} if % newerror
} if % stopped
flush clear
countdictstack 2 sub { end } repeat
} def
end % serverdict
% still putting things into systemdict
/handleerror { systemdict /errordict get /handleerror get exec } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% compatibility definitions %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
statusdict begin
/setjobtimeout {} def
/product (RoPS) def
end
% temporary, to allow FrameMaker spot colours
/currentcolortransfer { currenttransfer dup dup dup } def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% default halftone screen; 20 lines per inch (on a 100 lpi printer) %
% at an angle of 57 degrees. Circular dots becoming square at 50% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/ScreenFreq 20 def
/ScreenAngle 57 def
/LPI 100 def
/WidthMM 210 def
/DepthMM 297 def
(framebuffer) getprofile { { cvx exec def } forall } if % maybe override
ScreenFreq ScreenAngle
{ abs exch abs 2 copy add 1 gt
{ 1 sub dup mul exch 1 sub dup mul add 1 sub }
{ dup mul exch dup mul add 1 exch sub }
ifelse } setscreen
end % systemdict
systemdict readonly pop
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% finished with systemdict; userdict is waiting on the stack ... %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/StandardEncoding
[
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
/numbersign /dollar /percent /ampersand /quoteright /parenleft
/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g
/h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft
/bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /space /exclamdown /cent /sterling /fraction /yen /florin
/section /currency /quotesingle /quotedblleft /guillemotleft
/guilsinglleft /guilsinglright /fi /fl /.notdef /endash /dagger
/daggerdbl /periodcentered /.notdef /paragraph /bullet /quotesinglbase
/quotedblbase /quotedblright /guillemotright /ellipsis /perthousand
/.notdef /questiondown /.notdef /grave /acute /circumflex /tilde
/macron /breve /dotaccent /dieresis /.notdef /degree /cedilla /.notdef
/hungarumlaut /ogonek /caron /emdash /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /AE /.notdef
/ordfeminine /.notdef /.notdef /.notdef /.notdef /Lslash /Oslash /OE
/ordmasculine /.notdef /.notdef /.notdef /.notdef /.notdef /ae
/.notdef /.notdef /.notdef /dotlessi /.notdef /.notdef /lslash /oslash
/oe /germandbls /.notdef /.notdef /.notdef /.notdef
] def
/ISOLatin1Encoding
[
/grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis
/ring /cedilla /hungarumlaut /ogonek /caron /dotlessi /fi /fl /Lslash
/lslash /Zcaron /zcaron /minus /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
/exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
/zero /one /two /three /four /five /six /seven /eight /nine /colon
/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H
/I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore /grave /a /b /c /d
/e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z
/braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef
/quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef
/.notdef /.notdef /quoteleft /quoteright /quotedblleft /quotedblright
/bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe
/.notdef /.notdef /Ydieresis /.notdef /exclamdown /cent /sterling
/currency /yen /brokenbar /section /dieresis /copyright /ordfeminine
/guillemotleft /logicalnot /hyphen /registered /macron /degree
/plusminus /twosuperior /threesuperior /acute /mu /paragraph
/periodcentered /cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute
/Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute
/Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth
/Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn
/germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae
/ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute
/icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex
/otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
/findfont {
dup FontDirectory exch known not {
(findfont: can't find ) print dup =print
(; using Courier) print flush
dup CourierFont ttmap
} if
FontDirectory exch get
} bind def
/=string 140 string def
/=print { =string cvs print } bind def
/= { =print (\n) print } bind def
/==dict 20 dict def
==dict begin
/=qc { /str ( x) def % quote a character
str exch 0 exch put
(\nx\\n\rx\\r\tx\\t\bx\\b\fx\\f\(x\\\(\)x\\\)\\x\\\\)
str search
{ pop pop 0 2 getinterval }
{ pop str 0 1 getinterval } ifelse print
} bind def
/indent { 1 1 depth { pop (\t) print } for } def
/expand {
indent dup type exec print
(\n) print
} bind def
/arraytype {
dup xcheck { ({\n) } { ([\n) } ifelse print
/depth depth 1 add def
dup rcheck { dup {expand} forall }
{ indent (???\n) print } ifelse
/depth depth 1 sub def
indent xcheck { (}) } { (]) } ifelse
} bind def
/booleantype { { (true) } { (false) } ifelse } bind def
/dicttype { dup length =print ( ) print maxlength =print
( ) print (-dicttype-) } bind def
/filetype { pop (-filetype-) } bind def
/fonttype { pop (-fonttype-) } bind def
/integertype { =string cvs } bind def
/marktype { pop (-marktype-) } bind def
/nametype { dup xcheck not { (/) print } if =string cvs } bind def
/nulltype { pop (-nulltype-) } bind def
/operatortype { (--) print =string cvs print (--) } bind def
/realtype { =string cvs } bind def
/savetype { pop (-savetype-) } bind def
/stringtype { dup rcheck { (\() print {=qc} forall (\)) }
{ pop (\(???\)) } ifelse } bind def
/depth 0 def
end
/== {
==dict begin
expand
end
} bind def
/stack { count dup 1 add copy { = } repeat pop } bind def
/pstack { count dup 1 add copy { == } repeat pop } bind def
/\004 {} def % ignore ^D in input file
/server
{
{
(%stdin) (r) file status not { exit } if
serverdict /serversave save put
% has to be done inside save context, since writing
% to a saved array uses VM, and it could be vmerror
build$error
serverdict /execjob get exec
serverdict /exitservercalled get
serverdict /serversave get restore
{
(exitserver : permanent state may be changed)
serverdict /statusmsg get exec
serverdict /execjob get exec
} if % exitservercalled
} loop
} bind def
/quit { stop } bind def
/start { server } bind def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% userdict is still on stack; system/user specific stuff starts here %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
% create a frame buffer %
%%%%%%%%%%%%%%%%%%%%%%%%%
/pixelwidth WidthMM 25.4 div LPI mul cvi def
/pixeldepth DepthMM 25.4 div LPI mul cvi def
/framescale LPI 72 div def
[ framescale 0 0 framescale 0 0 ]
pixelwidth pixeldepth {} framedevice % create frame device (proc unused)
/TT_ANSI_CharStrings 330 dict dup % map character name to font entry
begin
/space 32 def /exclam 33 def /quotedbl 34 def /numbersign 35 def
/dollar 36 def /percent 37 def /ampersand 38 def /quotesingle 39 def
/parenleft 40 def /parenright 41 def /asterisk 42 def /plus 43 def
/comma 44 def /hyphen 45 def /period 46 def /slash 47 def /zero 48 def
/one 49 def /two 50 def /three 51 def /four 52 def /five 53 def /six
54 def /seven 55 def /eight 56 def /nine 57 def /colon 58 def
/semicolon 59 def /less 60 def /equal 61 def /greater 62 def /question
63 def /at 64 def /A 65 def /B 66 def /C 67 def /D 68 def /E 69 def /F
70 def /G 71 def /H 72 def /I 73 def /J 74 def /K 75 def /L 76 def /M
77 def /N 78 def /O 79 def /P 80 def /Q 81 def /R 82 def /S 83 def /T
84 def /U 85 def /V 86 def /W 87 def /X 88 def /Y 89 def /Z 90 def
/bracketleft 91 def /backslash 92 def /bracketright 93 def
/asciicircum 94 def /underscore 95 def /grave 96 def /a 97 def /b 98
def /c 99 def /d 100 def /e 101 def /f 102 def /g 103 def /h 104 def
/i 105 def /j 106 def /k 107 def /l 108 def /m 109 def /n 110 def /o
111 def /p 112 def /q 113 def /r 114 def /s 115 def /t 116 def /u 117
def /v 118 def /w 119 def /x 120 def /y 121 def /z 122 def /braceleft
123 def /bar 124 def /braceright 125 def /asciitilde 126 def /.notdef
127 def /nbspace 160 def /exclamdown 161 def /cent 162 def /sterling
163 def /currency 164 def /yen 165 def /brokenbar 166 def /section 167
def /dieresis 168 def /copyright 169 def /ordfeminine 170 def
/guillemotleft 171 def /logicalnot 172 def /sfthyphen 173 def
/registered 174 def /macron 175 def /degree 176 def /plusminus 177 def
/twosuperior 178 def /threesuperior 179 def /acute 180 def /mu 181 def
/paragraph 182 def /periodcentered 183 def /cedilla 184 def
/onesuperior 185 def /ordmasculine 186 def /guillemotright 187 def
/onequarter 188 def /onehalf 189 def /threequarters 190 def
/questiondown 191 def /Agrave 192 def /Aacute 193 def /Acircumflex 194
def /Atilde 195 def /Adieresis 196 def /Aring 197 def /AE 198 def
/Ccedilla 199 def /Egrave 200 def /Eacute 201 def /Ecircumflex 202 def
/Edieresis 203 def /Igrave 204 def /Iacute 205 def /Icircumflex 206
def /Idieresis 207 def /Eth 208 def /Ntilde 209 def /Ograve 210 def
/Oacute 211 def /Ocircumflex 212 def /Otilde 213 def /Odieresis 214
def /multiply 215 def /Oslash 216 def /Ugrave 217 def /Uacute 218 def
/Ucircumflex 219 def /Udieresis 220 def /Yacute 221 def /Thorn 222 def
/germandbls 223 def /agrave 224 def /aacute 225 def /acircumflex 226
def /atilde 227 def /adieresis 228 def /aring 229 def /ae 230 def
/ccedilla 231 def /egrave 232 def /eacute 233 def /ecircumflex 234 def
/edieresis 235 def /igrave 236 def /iacute 237 def /icircumflex 238
def /idieresis 239 def /eth 240 def /ntilde 241 def /ograve 242 def
/oacute 243 def /ocircumflex 244 def /otilde 245 def /odieresis 246
def /divide 247 def /oslash 248 def /ugrave 249 def /uacute 250 def
/ucircumflex 251 def /udieresis 252 def /yacute 253 def /thorn 254 def
/ydieresis 255 def /fi 16#690066 def /fl 16#6c0066 def
unicode {
% Unicode encoding (NT)
/overstore 175 def /middot 183 def
/Abreve 16#102 def /abreve 16#103 def /Aogonek 16#104 def /aogonek
16#105 def /Cacute 16#106 def /cacute 16#107 def /Ccaron 16#10c def
/ccaron 16#10d def /Dcaron 16#10e def /dcaron 16#10f def /Dslash
16#110 def /dmacron 16#111 def /dslash 16#111 def /Eogonek 16#118 def
/eogonek 16#119 def /Ecaron 16#11a def /ecaron 16#11b def /Gbreve
16#11e def /gbreve 16#11f def /Idot 16#130 def /dotlessi 16#131 def
/Lacute 16#139 def /lacute 16#13a def /Lcaron 16#13d def /lcaron
16#13e def /Ldot 16#13f def /ldot 16#140 def /Lslash 16#141 def
/lslash 16#142 def /Nacute 16#143 def /nacute 16#144 def /Ncaron
16#147 def /ncaron 16#148 def /Odblacute 16#150 def /odblacute 16#151
def /OE 16#152 def /oe 16#153 def /Racute 16#154 def /racute 16#155
def /Rcaron 16#158 def /rcaron 16#159 def /Sacute 16#15a def /sacute
16#15b def /Scedilla 16#15e def /scedilla 16#15f def /Scaron 16#160
def /scaron 16#161 def /Tcedilla 16#162 def /tcedilla 16#163 def
/Tcaron 16#164 def /tcaron 16#165 def /Uring 16#16e def /uring 16#16f
def /Udblqcute 16#170 def /udblacute 16#171 def /Ydieresis 16#178 def
/Zacute 16#179 def /zacute 16#17a def /Zdot 16#17b def /zdot 16#17c
def /Zcaron 16#17d def /zcaron 16#17e def /florin 16#192 def
/hungarumlaut 16#2dd def /caron 16#2c7 def /macron 16#2c9 def /breve
16#2d8 def /dotaccent 16#2d9 def /ring 16#2da def /ogonek 16#2db def
/circumflex 16#2c6 def /tilde 16#2dc def /Gamma 16#393 def /Theta
16#398 def /Phi 16#3a6 def /alpha 16#3b1 def /delta 16#3b4 def
/epsilon 16#3b5 def /pi 16#3c0 def /sigma 16#3c3 def /tau 16#3c4 def
/phi 16#3c6 def /endash 16#2013 def /emdash 16#2014 def /underscoredbl
16#2017 def /quoteleft 16#2018 def /quoteright 16#2019 def
/quotesinglbase 16#201a def /quotedblleft 16#201c def /quotedblright
16#201d def /quotedblbase 16#201e def /dagger 16#2020 def /daggerdbl
16#2021 def /bullet 16#2022 def /ellipsis 16#2026 def /perthousand
16#2030 def /guilsinglleft 16#2039 def /guilsinglright 16#203a def
/exclamdbl 16#203c def /nsuperior 16#207f def /franc 16#20a3 def
/peseta 16#20a7 def /trademark 16#2122 def /arrowleft 16#2190 def
/arrowup 16#2191 def /arrowright 16#2192 def /arrowdown 16#2193 def
/arrowboth 16#2194 def /arrowupdn 16#2195 def /arrowupdnbse 16#21a8
def /ohm 16#2126 def /partialdiff 16#2202 def /Delta 16#2206 def
/product 16#220f def /summation 16#2211 def /Sigma 16#2211 def /minus
16#2212 def /fraction 16#2215 def /periodcentered 16#2219 def /radical
16#221a def /infinity 16#221e def /orthogonal 16#221f def
/intersection 16#2229 def /integral 16#222b def /approxequal 16#2248
def /notequal 16#2260 def /equivalence 16#2261 def /lessequal 16#2264
def /greaterequal 16#2265 def /house 16#2302 def /revlogicalnot
16#2310 def /integraltp 16#2320 def /integralbt 16#2321 def
} {
% Windows encoding
/quotesinglbase 130 def /florin 131 def /quotedblbase 132 def
/ellipsis 133 def /dagger 134 def /daggerdbl 135 def /circumflex 136
def /perthousand 137 def /Scaron 138 def /guilsinglleft 139 def /OE
140 def /quoteleft 145 def /quoteright 146 def /quotedblleft 147 def
/quotedblright 148 def /bullet 149 def /endash 150 def /emdash 151 def
/tilde 152 def /trademark 153 def /scaron 154 def /guilsinglright 155
def /oe 156 def /Ydieresis 159 def
} ifelse % unicode
end def
/TT_BuildChar {
exch begin
TTName (Symbol) eq {
unicode { 16#8000 add } if
}
{
Encoding exch get
dup CharStrings exch known not
{ pop (.notdef) } if
CharStrings exch get
} ifelse
end
ttchar
} def
/TT_FontInfo 2 dict dup begin
/UnderlinePosition -0.1 def
/UnderlineThickness 0.1 def
end def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This function associates PostScript font names with Windows TrueType %
% fonts. The RoPS interpreter uses the Windows rendering routines to %
% paint the TrueType characters. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/ttmap {
11 dict dup begin
exch /TTName exch def
exch /FontName exch def
/Metrics 0 dict def
/FontMatrix [ 1.0 0.0 0.0 1.0 0.0 0.0 ] readonly def
/FontType 3 def
/Encoding StandardEncoding def
/FontBBox { 0 0 0 0 } readonly def
/CharStrings TT_ANSI_CharStrings def
/BuildChar /TT_BuildChar load def
/FontInfo TT_FontInfo def
FontName end
exch definefont pop
} def
(fontlist) getprofile { { ttmap } forall } if
(fontalias) getprofile { { ttmap } forall } if
/CourierFont FontDirectory /Courier get /TTName get def
%%%%%%%%%%%
% hackery %
%%%%%%%%%%%
/lettertray {} def
/letter {} def
/a4tray {} def
/a4 {} def
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% when we fall off the end of this file, 'start' will be executed %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% --- end ---